import axios from "axios"
import store from "@/store"
//创建axios实例
const instance = axios.create({
    baseURL: "http://520it.com:8881/cms",
    // 每次请求的过期时间 20秒
    timeout: 20000
})

//拦截每一次请求 （请求拦截器）
instance.interceptors.request.use(config => {
    //学习一个函数 
    //什么时候执行 请求之前执行 
    //函数里面要做什么 可以做一些请求之前的准备工作，例如设置请求头，携带token
    //返回值是什么




    let token = localStorage.getItem("x-auth-token")
    if(token){
        config.headers["x-auth-token"] = token 
    }
    
    //没有返回config请求发不出去 config就是本次请求的相关信息
    console.log("config",config);
    return config
}, err => {
    return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(res => {
    //什么时候执行这个函数？？后端返回拿到数据，并且在组件内部接收到之前 执行这个函数
    //res 是？ axios给我们封装的一个响应对象
    //res.data 才是真正后端给我们的数据
    //响应拦截器，可以对后端给我们的数据做一个统一处理
    // console.log("res为", res);
    // console.log("res.data为", res.data);

    // 业务失败的统一处理
    let arr = [0,400,407,401]
    if (!arr.includes(res.data.code) ) {
        //判断失败，提示用户失败了
        
        store.dispatch("handleToast/asynChanIsShowToast",{
            msg:res.data.message,
            type:"danger"
        })
        return false
    }


    //返回res对象 组件内部才能拿到这个res相关数据
    return res.data
}, err => {
    //请求失败的处理
    store.dispatch("handleToast/asynChanIsShowToast",{
        msg:err,
        type:"danger"
    })
    return Promise.reject(err)
})

export default instance